/* 求二叉树中值为x的层号 */
#include <iostream>
#include "BiTreefun.h"
using namespace std;

// 查找二叉树中值为x的层号 -- 方法一
void fun(BTNode *p, char x, int L)
{
  // 如果二叉树不为空
  if (p != NULL)
  {
    // 判断根结点的值
    if (p->data == x)
      cout << "层号为:" << L;
    
    // 在左子树中查询
    fun(p->lchild, x, L + 1);
    
    // 在右子树中查询
    fun(p->rchild, x, L + 1);
  }
}

// 查找二叉树中值为x的层号 -- 方法二
void fun1(BTNode *p, char x, int L)
{
  // 如果二叉树不为空
  if (p != NULL)
  {
    // 判断根结点的值
    if (p->data == x)
      cout << "层号为:" << L;
    ++L;
    // 在左子树中查询
    fun1(p->lchild, x, L);
    
    // 在右子树中查询
    fun1(p->rchild, x, L);
    --L;
  }
}

int main()
{
  // 创建二叉树
  BTNode *T = create_bitree();
  
  // 记录当前所在的层号
  int L = 1;
  
  // 查找值为'7'的结点的层号
  fun1(T, '7', L);
}
